home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / thinkref / archive / THINKPascalUH2.1.sea / THINKPas Univ Hdr 2.1 / Interfaces / Collections.p < prev    next >
Text File  |  1995-09-12  |  12KB  |  337 lines

  1. { Converted with MPW2TPas Tuesday, September 12, 1995 5:33:12 PM }
  2. {
  3.      File:        Collections.p
  4.  
  5.      Contains:    Collection Manager Interfaces.
  6.  
  7.      Version:    Technology:    Quickdraw GX 1.0
  8.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  9.  
  10.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  14.                  stack.  Include the file and version information (from above)
  15.                  in the problem description and send to:
  16.                      Internet:    apple.bugs@applelink.apple.com
  17.                      AppleLink:    APPLE.BUGS
  18.  
  19. }
  20.  
  21.  UNIT Collections;
  22.  INTERFACE
  23.  
  24.  
  25. {$IFC UNDEFINED __COLLECTIONS__}
  26. {$SETC __COLLECTIONS__ := 1}
  27.  
  28.   USES
  29.    ConditionalMacros, Types, MixedMode;
  30.  
  31. { $PUSH}
  32. { $ALIGN MAC68K}
  33. { $LibExport+}
  34.  
  35. CONST
  36.     gestaltCollectionMgrVersion    = 'cltn';
  37.  
  38. { Collection Manager Error Result Codes... }
  39.     collectionItemLockedErr        = -5750;
  40.     collectionItemNotFoundErr    = -5751;
  41.     collectionIndexRangeErr        = -5752;
  42.     collectionVersionErr        = -5753;
  43.  
  44. { Convenience constants for functions which optionally return values... }
  45.     dontWantTag                    = 0;
  46.     dontWantId                    = 0;
  47.     dontWantSize                = 0;
  48.     dontWantAttributes            = 0;
  49.     dontWantIndex                = 0;
  50.     dontWantData                = 0;
  51.  
  52. { attributes bits }
  53.     noCollectionAttributes        = $00000000;                    { no attributes bits set }
  54.     allCollectionAttributes        = $FFFFFFFF;                    { all attributes bits set }
  55.     userCollectionAttributes    = $0000FFFF;                    { user attributes bits }
  56.     defaultCollectionAttributes    = $40000000;                    { default attributes - unlocked, persistent }
  57.  
  58.     Attribute bits 0 through 15 (entire low word) are reserved for use by the application.
  59.     Attribute bits 16 through 31 (entire high word) are reserved for use by the Collection Manager.
  60.     Only bits 31 (collectionLockBit) and 30 (collectionPersistenceBit) currently have meaning.
  61. }
  62.     collectionUser0Bit            = 0;
  63.     collectionUser1Bit            = 1;
  64.     collectionUser2Bit            = 2;
  65.     collectionUser3Bit            = 3;
  66.     collectionUser4Bit            = 4;
  67.     collectionUser5Bit            = 5;
  68.     collectionUser6Bit            = 6;
  69.     collectionUser7Bit            = 7;
  70.     collectionUser8Bit            = 8;
  71.     collectionUser9Bit            = 9;
  72.     collectionUser10Bit            = 10;
  73.     collectionUser11Bit            = 11;
  74.     collectionUser12Bit            = 12;
  75.     collectionUser13Bit            = 13;
  76.     collectionUser14Bit            = 14;
  77.     collectionUser15Bit            = 15;
  78.     collectionReserved0Bit        = 16;
  79.     collectionReserved1Bit        = 17;
  80.     collectionReserved2Bit        = 18;
  81.     collectionReserved3Bit        = 19;
  82.     collectionReserved4Bit        = 20;
  83.     collectionReserved5Bit        = 21;
  84.     collectionReserved6Bit        = 22;
  85.     collectionReserved7Bit        = 23;
  86.     collectionReserved8Bit        = 24;
  87.     collectionReserved9Bit        = 25;
  88.     collectionReserved10Bit        = 26;
  89.     collectionReserved11Bit        = 27;
  90.     collectionReserved12Bit        = 28;
  91.     collectionReserved13Bit        = 29;
  92.     collectionPersistenceBit    = 30;
  93.     collectionLockBit            = 31;
  94.  
  95. { attribute masks }
  96.     collectionUser0Mask            = $1;
  97.     collectionUser1Mask            = $2;
  98.     collectionUser2Mask            = $4;
  99.     collectionUser3Mask            = $8;
  100.     collectionUser4Mask            = $10;
  101.     collectionUser5Mask            = $20;
  102.     collectionUser6Mask            = $40;
  103.     collectionUser7Mask            = $80;
  104.     collectionUser8Mask            = $100;
  105.     collectionUser9Mask            = $200;
  106.     collectionUser10Mask        = $400;
  107.     collectionUser11Mask        = $800;
  108.     collectionUser12Mask        = $1000;
  109.     collectionUser13Mask        = $2000;
  110.     collectionUser14Mask        = $4000;
  111.     collectionUser15Mask        = $8000;
  112.     collectionReserved0Mask        = $10000;
  113.     collectionReserved1Mask        = $20000;
  114.     collectionReserved2Mask        = $40000;
  115.     collectionReserved3Mask        = $80000;
  116.     collectionReserved4Mask        = $100000;
  117.     collectionReserved5Mask        = $200000;
  118.     collectionReserved6Mask        = $400000;
  119.     collectionReserved7Mask        = $800000;
  120.     collectionReserved8Mask        = $1000000;
  121.     collectionReserved9Mask        = $2000000;
  122.     collectionReserved10Mask    = $4000000;
  123.     collectionReserved11Mask    = $8000000;
  124.     collectionReserved12Mask    = $10000000;
  125.     collectionReserved13Mask    = $20000000;
  126.     collectionPersistenceMask    = $40000000;
  127.     collectionLockMask            = $80000000;
  128.  
  129. {*********}
  130. { Types   }
  131. {*********}
  132. { abstract data type for a collection }
  133.     
  134. TYPE
  135.     Collection = Ptr;
  136.  
  137.     CollectionTag = FourCharCode;
  138.  
  139.     CollectionFlattenProcPtr = ProcPtr;  { FUNCTION CollectionFlatten(size: LONGINT; data: UNIV Ptr; refCon: UNIV Ptr): OSErr; }
  140.     CollectionExceptionProcPtr = ProcPtr;  { FUNCTION CollectionException(c: Collection; status: OSErr): OSErr; }
  141.     CollectionFlattenUPP = UniversalProcPtr;
  142.     CollectionExceptionUPP = UniversalProcPtr;
  143.  
  144. CONST
  145.     uppCollectionFlattenProcInfo = $00000FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  146.     uppCollectionExceptionProcInfo = $000002E0; { FUNCTION (4 byte param, 2 byte param): 2 byte result; }
  147.  
  148. FUNCTION NewCollectionFlattenProc(userRoutine: CollectionFlattenProcPtr): CollectionFlattenUPP;
  149.     {$IFC NOT GENERATINGCFM }
  150.     INLINE $2E9F;
  151.     {$ENDC}
  152.  
  153. FUNCTION NewCollectionExceptionProc(userRoutine: CollectionExceptionProcPtr): CollectionExceptionUPP;
  154.     {$IFC NOT GENERATINGCFM }
  155.     INLINE $2E9F;
  156.     {$ENDC}
  157.  
  158. FUNCTION CallCollectionFlattenProc(size: LONGINT; data: UNIV Ptr; refCon: UNIV Ptr; userRoutine: CollectionFlattenUPP): OSErr;
  159.     {$IFC NOT GENERATINGCFM}
  160.     INLINE $205F, $4E90;
  161.     {$ENDC}
  162.  
  163. FUNCTION CallCollectionExceptionProc(c: Collection; status: OSErr; userRoutine: CollectionExceptionUPP): OSErr;
  164.     {$IFC NOT GENERATINGCFM}
  165.     INLINE $205F, $4E90;
  166.     {$ENDC}
  167.  
  168. FUNCTION NewCollection: Collection;
  169.     {$IFC NOT GENERATINGCFM}
  170.     INLINE $7000, $ABF6;
  171.     {$ENDC}
  172. PROCEDURE DisposeCollection(c: Collection);
  173.     {$IFC NOT GENERATINGCFM}
  174.     INLINE $7001, $ABF6;
  175.     {$ENDC}
  176. FUNCTION CloneCollection(c: Collection): Collection;
  177.     {$IFC NOT GENERATINGCFM}
  178.     INLINE $7002, $ABF6;
  179.     {$ENDC}
  180. FUNCTION CountCollectionOwners(c: Collection): LONGINT;
  181.     {$IFC NOT GENERATINGCFM}
  182.     INLINE $7003, $ABF6;
  183.     {$ENDC}
  184. FUNCTION CopyCollection(srcCollection: Collection; dstCollection: Collection): Collection;
  185.     {$IFC NOT GENERATINGCFM}
  186.     INLINE $7004, $ABF6;
  187.     {$ENDC}
  188. FUNCTION GetCollectionDefaultAttributes(c: Collection): LONGINT;
  189.     {$IFC NOT GENERATINGCFM}
  190.     INLINE $7005, $ABF6;
  191.     {$ENDC}
  192. PROCEDURE SetCollectionDefaultAttributes(c: Collection; whichAttributes: LONGINT; newAttributes: LONGINT);
  193.     {$IFC NOT GENERATINGCFM}
  194.     INLINE $7006, $ABF6;
  195.     {$ENDC}
  196. FUNCTION CountCollectionItems(c: Collection): LONGINT;
  197.     {$IFC NOT GENERATINGCFM}
  198.     INLINE $7007, $ABF6;
  199.     {$ENDC}
  200. FUNCTION AddCollectionItem(c: Collection; tag: CollectionTag; id: LONGINT; itemSize: LONGINT; itemData: UNIV Ptr): OSErr;
  201.     {$IFC NOT GENERATINGCFM}
  202.     INLINE $7008, $ABF6;
  203.     {$ENDC}
  204. FUNCTION GetCollectionItem(c: Collection; tag: CollectionTag; id: LONGINT; VAR itemSize: LONGINT; itemData: UNIV Ptr): OSErr;
  205.     {$IFC NOT GENERATINGCFM}
  206.     INLINE $7009, $ABF6;
  207.     {$ENDC}
  208. FUNCTION RemoveCollectionItem(c: Collection; tag: CollectionTag; id: LONGINT): OSErr;
  209.     {$IFC NOT GENERATINGCFM}
  210.     INLINE $700A, $ABF6;
  211.     {$ENDC}
  212. FUNCTION SetCollectionItemInfo(c: Collection; tag: CollectionTag; id: LONGINT; whichAttributes: LONGINT; newAttributes: LONGINT): OSErr;
  213.     {$IFC NOT GENERATINGCFM}
  214.     INLINE $700B, $ABF6;
  215.     {$ENDC}
  216. FUNCTION GetCollectionItemInfo(c: Collection; tag: CollectionTag; id: LONGINT; VAR index: LONGINT; VAR itemSize: LONGINT; VAR attributes: LONGINT): OSErr;
  217.     {$IFC NOT GENERATINGCFM}
  218.     INLINE $700C, $ABF6;
  219.     {$ENDC}
  220. FUNCTION ReplaceIndexedCollectionItem(c: Collection; index: LONGINT; itemSize: LONGINT; itemData: UNIV Ptr): OSErr;
  221.     {$IFC NOT GENERATINGCFM}
  222.     INLINE $700D, $ABF6;
  223.     {$ENDC}
  224. FUNCTION GetIndexedCollectionItem(c: Collection; index: LONGINT; VAR itemSize: LONGINT; itemData: UNIV Ptr): OSErr;
  225.     {$IFC NOT GENERATINGCFM}
  226.     INLINE $700E, $ABF6;
  227.     {$ENDC}
  228. FUNCTION RemoveIndexedCollectionItem(c: Collection; index: LONGINT): OSErr;
  229.     {$IFC NOT GENERATINGCFM}
  230.     INLINE $700F, $ABF6;
  231.     {$ENDC}
  232. FUNCTION SetIndexedCollectionItemInfo(c: Collection; index: LONGINT; whichAttributes: LONGINT; newAttributes: LONGINT): OSErr;
  233.     {$IFC NOT GENERATINGCFM}
  234.     INLINE $7010, $ABF6;
  235.     {$ENDC}
  236. FUNCTION GetIndexedCollectionItemInfo(c: Collection; index: LONGINT; VAR tag: CollectionTag; VAR id: LONGINT; VAR itemSize: LONGINT; VAR attributes: LONGINT): OSErr;
  237.     {$IFC NOT GENERATINGCFM}
  238.     INLINE $7011, $ABF6;
  239.     {$ENDC}
  240. FUNCTION CollectionTagExists(c: Collection; tag: CollectionTag): BOOLEAN;
  241.     {$IFC NOT GENERATINGCFM}
  242.     INLINE $7012, $ABF6;
  243.     {$ENDC}
  244. FUNCTION CountCollectionTags(c: Collection): LONGINT;
  245.     {$IFC NOT GENERATINGCFM}
  246.     INLINE $7013, $ABF6;
  247.     {$ENDC}
  248. FUNCTION GetIndexedCollectionTag(c: Collection; tagIndex: LONGINT; VAR tag: CollectionTag): OSErr;
  249.     {$IFC NOT GENERATINGCFM}
  250.     INLINE $7014, $ABF6;
  251.     {$ENDC}
  252. FUNCTION CountTaggedCollectionItems(c: Collection; tag: CollectionTag): LONGINT;
  253.     {$IFC NOT GENERATINGCFM}
  254.     INLINE $7015, $ABF6;
  255.     {$ENDC}
  256. FUNCTION GetTaggedCollectionItem(c: Collection; tag: CollectionTag; whichItem: LONGINT; VAR itemSize: LONGINT; itemData: UNIV Ptr): OSErr;
  257.     {$IFC NOT GENERATINGCFM}
  258.     INLINE $7016, $ABF6;
  259.     {$ENDC}
  260. FUNCTION GetTaggedCollectionItemInfo(c: Collection; tag: CollectionTag; whichItem: LONGINT; VAR id: LONGINT; VAR index: LONGINT; VAR itemSize: LONGINT; VAR attributes: LONGINT): OSErr;
  261.     {$IFC NOT GENERATINGCFM}
  262.     INLINE $7017, $ABF6;
  263.     {$ENDC}
  264. PROCEDURE PurgeCollection(c: Collection; whichAttributes: LONGINT; matchingAttributes: LONGINT);
  265.     {$IFC NOT GENERATINGCFM}
  266.     INLINE $7018, $ABF6;
  267.     {$ENDC}
  268. PROCEDURE PurgeCollectionTag(c: Collection; tag: CollectionTag);
  269.     {$IFC NOT GENERATINGCFM}
  270.     INLINE $7019, $ABF6;
  271.     {$ENDC}
  272. PROCEDURE EmptyCollection(c: Collection);
  273.     {$IFC NOT GENERATINGCFM}
  274.     INLINE $701A, $ABF6;
  275.     {$ENDC}
  276. FUNCTION FlattenCollection(c: Collection; flattenProc: CollectionFlattenUPP; refCon: UNIV Ptr): OSErr;
  277.     {$IFC NOT GENERATINGCFM}
  278.     INLINE $701B, $ABF6;
  279.     {$ENDC}
  280. FUNCTION FlattenPartialCollection(c: Collection; flattenProc: CollectionFlattenUPP; refCon: UNIV Ptr; whichAttributes: LONGINT; matchingAttributes: LONGINT): OSErr;
  281.     {$IFC NOT GENERATINGCFM}
  282.     INLINE $701C, $ABF6;
  283.     {$ENDC}
  284. FUNCTION UnflattenCollection(c: Collection; flattenProc: CollectionFlattenUPP; refCon: UNIV Ptr): OSErr;
  285.     {$IFC NOT GENERATINGCFM}
  286.     INLINE $701D, $ABF6;
  287.     {$ENDC}
  288. FUNCTION GetCollectionExceptionProc(c: Collection): CollectionExceptionUPP;
  289.     {$IFC NOT GENERATINGCFM}
  290.     INLINE $701E, $ABF6;
  291.     {$ENDC}
  292. PROCEDURE SetCollectionExceptionProc(c: Collection; exceptionProc: CollectionExceptionUPP);
  293.     {$IFC NOT GENERATINGCFM}
  294.     INLINE $701F, $ABF6;
  295.     {$ENDC}
  296. {***************************************************************************************}
  297. { Utility Routines for handle-based access...                                                          }
  298. {***************************************************************************************}
  299. FUNCTION GetNewCollection(collectionID: INTEGER): Collection;
  300.     {$IFC NOT GENERATINGCFM}
  301.     INLINE $7020, $ABF6;
  302.     {$ENDC}
  303. FUNCTION AddCollectionItemHdl(aCollection: Collection; tag: CollectionTag; id: LONGINT; itemData: Handle): OSErr;
  304.     {$IFC NOT GENERATINGCFM}
  305.     INLINE $7021, $ABF6;
  306.     {$ENDC}
  307. FUNCTION GetCollectionItemHdl(aCollection: Collection; tag: CollectionTag; id: LONGINT; itemData: Handle): OSErr;
  308.     {$IFC NOT GENERATINGCFM}
  309.     INLINE $7022, $ABF6;
  310.     {$ENDC}
  311. FUNCTION ReplaceIndexedCollectionItemHdl(aCollection: Collection; index: LONGINT; itemData: Handle): OSErr;
  312.     {$IFC NOT GENERATINGCFM}
  313.     INLINE $7023, $ABF6;
  314.     {$ENDC}
  315. FUNCTION GetIndexedCollectionItemHdl(aCollection: Collection; index: LONGINT; itemData: Handle): OSErr;
  316.     {$IFC NOT GENERATINGCFM}
  317.     INLINE $7024, $ABF6;
  318.     {$ENDC}
  319. FUNCTION FlattenCollectionToHdl(aCollection: Collection; flattened: Handle): OSErr;
  320.     {$IFC NOT GENERATINGCFM}
  321.     INLINE $7025, $ABF6;
  322.     {$ENDC}
  323. FUNCTION UnflattenCollectionFromHdl(aCollection: Collection; flattened: Handle): OSErr;
  324.     {$IFC NOT GENERATINGCFM}
  325.     INLINE $7026, $ABF6;
  326.     {$ENDC}
  327.  
  328. { $ALIGN RESET}
  329. { $POP}
  330.  
  331. {$ENDC} {__COLLECTIONS__}
  332.  
  333.  IMPLEMENTATION
  334.  END.
  335.  
  336.